allow 和 deny 规则
首先举例:
1 2 3
| Order deny,allow deny from all allow from 127.0.0.1
|
我们判断的依据是这样的:
- 看 Order 后面的,哪个在前,哪个在后
- 如果 deny 在前,那么就需要看 deny from 这句,然后看 allow from 这一句
- 规则是一条一条的匹配的,不管是 deny 在前还是 allow 在前,都是会生效的。比如例子中,先 deny 了所有,然后又 allow 了127.0.0.1,所以 127.0.0.1 是通过的。
例子:
1 2 3
| Order allow,deny Deny from all Allow from 127.0.0.1
|
这个就会 deny 所有了, 127.0.0.1也会被 deny 。因为顺序是先 allow 然后 deny ,虽然一开始 allow 了127.0.0.1,但是后面又拒绝了它。
1 2
| Order allow,deny Deny from all
|
上面的规则就表示,全部都不能通
1 2
| Order deny,allow Deny from all
|
上面的规则就表示,全部都不能通
只有顺序,没有具体的规则,表示,全部都可以通行(默认的),因为 allow 在最后。
这个表示,全部都不能通行(默认的),因为 deny 在最后。
- 做某个目录闲置,只允许内网 ip 访问,这个目录可以是网站根目录,也就是整个站点都要做限制了。
1 2 3 4 5 6 7 8 9 10
| [root@lamp ~] <Directory "/data/www、"> AllowOverride None Options None Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>
|
说明:只允许 127.0.0.1 访问,其他 ip 全部拒绝。
- 针对请求的 uri 去限制,前面安装的 discuz 论坛,访问后台是 admin.php,那么就可以针对这个 admin.php 做限制。
1 2 3 4 5 6
| <filesmatch "(.*)admin(.*)"> Order Deny,Allow Deny from all Allow from 127.0.0.1 </filesmatch> `
|
说明:这里用到了 filesmatch 语法,表示匹配的意思。
检测是否有错,重启apache 服务
1 2 3
| [root@lamp ~] Syntax OK [root@lamp ~]
|
用curl 测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@lamp ~] HTTP/1.1 403 Forbidden Date: Thu, 05 Jan 2017 10:37:38 GMT Server: Apache/2.2.31 (Unix) PHP/5.6.6 Content-Type: text/html; charset=iso-8859-1 [root@lamp ~] HTTP/1.1 200 OK Date: Thu, 05 Jan 2017 10:37:40 GMT Server: Apache/2.2.31 (Unix) PHP/5.6.6 X-Powered-By: PHP/5.6.6 Set-Cookie: cbq6_2132_saltkey=W35308HL; expires=Sat, 04-Feb-2017 10:37:40 GMT; Max-Age=2592000; path=/; httponly Set-Cookie: cbq6_2132_lastvisit=1483609060; expires=Sat, 04-Feb-2017 10:37:40 GMT; Max-Age=2592000; path=/ Set-Cookie: cbq6_2132_sid=PUbGdd; expires=Fri, 06-Jan-2017 10:37:40 GMT; Max-Age=86400; path=/ Set-Cookie: cbq6_2132_lastact=1483612660%09admin.php%09; expires=Fri, 06-Jan-2017 10:37:40 GMT; Max-Age=86400; path=/ Cache-Control: max-age=0 Expires: Thu, 05 Jan 2017 10:37:40 GMT Content-Type: text/html; charset=gbk
|
本机 ip 192.168.0.99 被拒绝,而 127.0.0.1 可以访问。
Apache设置禁止访问.txt文件
做了目录禁止浏览后,目录下面的txt文件还是可以显示里面的内容的。
解决办法:
1 2 3 4
| Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Deny from all
|
apache 禁止trace或track防止xss攻击
TRACE和TRACK是用来调试web服务器连接的HTTP方式。
支持该方式的服务器存在跨站脚本漏洞,通常在描述各种浏览器缺陷的时候,把”Cross-Site-Tracing”简称为XST。
攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。
禁用trace可以使用rewrite功能来实现
1 2 3 4 5
| <IfModule mod_rewrite.c> RewriteEngine On RewriteCondi %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] </IfModule>
|
或者还可以直接在apache的配置文件中配置相应参数